Software can be divided into real-time-critical (real time software) and real-time-non-critical applications. For real-time-critical software for example, due to standards or the quality requirements of a user, a particular command or a particular task should be processed within a specified time. High latency times in command execution present a potential problem for real-time software, since long latency times (i.e., real-time violations) may lead, e.g., to a system crash.
One illustrative source for real-time violations are memory accesses, because the discrepancy between the ever shorter processing time of instructions in the processor and the access time to memory units has been steadily increasing due to the high power of modern processors. A way to reduce memory access time is the use of so-called cache memories, where part of the data required can be stored in a small fast memory arranged in the vicinity of the processor. The data stored in the cache memory are selected by taking into account the specific application such that as much of the data as possible expected to be required at a given moment are already present in the cache memory. However, current data selection techniques are imperfect and do not always result in the appropriate data being present in the cache memory at the right time. If required data is not present in the cache memory (referred to as a cache miss case), access to a secondary memory has been required, which typically entails a longer access time. Thus high latency times are often connected with such secondary memory access. However, high latency times, which can lead to a violation of real-time conditions, can also have other causes such as latency caused by bus conflicts and register access.
To optimize software such that high latency times, and hence the associated system crashes, can be avoided or reduced, software is normally tested and debugged. The execution of a sequence of commands by the processor is monitored to detect potential problems. However, such testing and debugging does not benefit from a way to determine execution times associated with the execution of commands.